Non-volatile data storage devices, such as flash solid state drive (SSD) memory devices or removable storage cards, have allowed for increased portability of data and software applications. Flash memory devices can enhance data storage density by storing multiple bits in each flash memory cell. For example, Multi-Level Cell (MLC) flash memory devices provide increased storage density by storing 2 bits per cell, 3 bits per cell, 4 bits per cell, or more. Although increasing the number of bits per cell and reducing device feature dimensions may increase a storage density of a non-volatile memory, a bit error rate of data stored at the non-volatile memory may also increase.
Error correction coding (ECC) is often used to correct errors that occur in data read from a non-volatile memory. Prior to storage, data may be encoded by an ECC encoder to generate redundant information. “parity bits”) that is associated with parity checks of the ECC encoding scheme and that may be stored with the data as an ECC codeword. As more parity bits are used, an error correction capacity of the ECC increases and a number of bits to store the encoded data also increases.
Although ECC encoding may be used to correct errors in data read from a non-volatile memory, ECC decoding cannot repair bit errors that were present in the data prior to the ECC encoding. Data may be corrupted prior to being received at an ECC encoder, such as due to cosmic radiation, radiative contaminations in packaging material or chips, failures such as temporary power drops, etc. For example, data may be corrupted as the data is transmitted along a data path of the storage device to the ECC encoder.